package com.climb.spingcloud.convert;

import com.climb.spingcloud.dto.ProductDto;
import com.climb.spingcloud.entity.Product;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * @author Administrator-NANA
 * @date 2021-07-28 16:49:27
 * @description 定义dto和entity之间的转换规则
 */
@Mapper//!注意这个注解,如果漏了就无法在controller返回转换后的对象给前端了
public interface ProductConvert {
    /***转换类实例*/
    ProductConvert INSTANCE = Mappers.getMapper(ProductConvert.class);

    /***把dto转换成entity*/
    Product dto2entity(ProductDto productDto);

    /***把entity转换为dto
     * 这里定义了两个对象的转换规则
     *
     * */
    @Mappings({
            @Mapping(source = "id", target = "id"),
            @Mapping(source = "name", target = "name"),
            @Mapping(source = "price", target = "price"),
            @Mapping(source = "stock", target = "stock")
    })
    ProductDto entity2dto(Product product);
    /***list之间也可以转换,把entity的list转换成MerchanDTO list*/
    List<ProductDto> entityList2dtoList(List<Product> products);
    /**
     * list之间也可以转换，把的MerchantDTO List转成entity list
     */
//    List<Product> dtoList2entityList(List<ProductDto> productDtos);
//    public static void main(String[] args) {
//        //将entity转换成dto
//        Product product =new Product();
//        product.setId(1L);
//        product.setName("张三");
//        System.out.println(product);
//        ProductDto productDto=ProductConvert.INSTANCE.entity2dto(product);
//        System.out.println(productDto);
//        //将dto转换成entity
//        productDto.setName("商户名称");
//        Product product1=ProductConvert.INSTANCE.dto2entity(productDto);
//        System.out.println(product1);
//        //定义List
//        List entiyList =new ArrayList();
//        entiyList.add(product);
//        //将list转成包含dto的list
//        List list=ProductConvert.INSTANCE.entityList2dtoList(entiyList);
//        System.out.println(list);
//
//
//
//    }
}